#ifndef RNG_H
#define RNG_H


namespace SlepRandom{
    double Random(void);
    void   PlantSeeds(long x);
    void   GetSeed(long *x);
    void   PutSeed(long x);
    void   SelectStream(int index);
    void   TestRandom(void);

    long Bernoulli(double p);
    long Binomial(long n, double p);
    long Equilikely(long a, long b);
    long Geometric(double p);
    long Pascal(long n, double p);
    long Poisson(double m);

    double Uniform(double a, double b);
    double Exponential(double m);
    double Erlang(long n, double b);
    double Normal(double m, double s);
    double Lognormal(double a, double b);
    double Chisquare(long n);
    double Student(long n);

    void slep_randn(double* x, int n, double mu=0.0, double sigma=1.0);
};


#endif // RNG_H
